// 千位符
export function formatNumberRgx(num) {
  num = num == null ? 0 : num;
  const parts = num.toString().split('.');
  parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ',');
  return parts.join('.');
};



/**
 * 柱狀圖、堆叠图隐藏数据为0的图例
 * @param {*数据来源} source
 * @param {*需要显示的key数组，如[c1,c3]} keyList
 * @param  {...需要被删除某列的数组,如color数组} args
 */
export function stackHiddenZero(source, keyList, ...args) {
  let obj = {};
  let allZero = true;
  source.map((item) => {
    keyList.map((key) => {
      obj[key] ? (obj[key] += item[key] || 0) : (obj[key] = item[key] || 0);
      if (item[key]) {
        allZero = false;
      }
    });
  });
  if (allZero) {
    return;
  }
  const length = keyList.length;
  let i = 0;
  while (i < length) {
    if (obj[keyList[i]] === 0) {
      keyList.splice(i, 1);
      args.forEach((item) => {
        item.splice(i, 1);
      });
    } else {
      i++;
    }
  }
};



/**
 * 饼图隐藏数据为0的图例
 * @param {*数据来源} data
 * @param {*需要显示的key数组，如c1} key
 * @param  {...需要被删除某列的数组,如color数组} args
 */
export function dataFilterToZero(data, key = 'c1', ...args) {
  const allZero = data.every((item) => item[key] === 0);
  if (!allZero) {
    let i = 0;
    while (i < data.length) {
      const isZero = !data[i][key];
      if (isZero) {
        data.splice(i, 1);
        if (args.length) {
          args.forEach((item) => {
            item.splice(i, 1);
          });
        }
      } else {
        i++;
      }
    }
  }
};